Parent-child Module কনফিগার করা

Java Technologies - অ্যাপাচি আইভি (Apache IVY) Multi-module Project Management |
151
151

অ্যাপাচি আইভি (Apache Ivy) ডিপেনডেন্সি ম্যানেজমেন্ট টুল যা Java প্রোজেক্টে ব্যবহৃত লাইব্রেরি এবং ডিপেনডেন্সি রেজলভেশনকে সহজ করে তোলে। Parent-Child Module কনফিগারেশন আইভি ব্যবহার করার একটি গুরুত্বপূর্ণ কৌশল, যেখানে একটি প্রোজেক্টের প্যারেন্ট মডিউল এবং তার চাইল্ড মডিউলের মধ্যে ডিপেনডেন্সি শেয়ার করা হয়।

Parent-Child মডিউল কনফিগারেশন একটি সাধারণ অ্যাপ্লিকেশন আর্কিটেকচার, যেখানে একটি প্রধান (প্যারেন্ট) মডিউল থাকবে এবং তার অধীনে একাধিক সাব-প্রজেক্ট বা চাইল্ড মডিউল থাকবে। এই কনফিগারেশনটি ব্যবহার করার মাধ্যমে আপনি আপনার প্রোজেক্টের বিভিন্ন মডিউলের ডিপেনডেন্সি সমন্বয় করতে পারেন এবং একাধিক মডিউলের মধ্যে ডিপেনডেন্সি ম্যানেজমেন্টকে সহজতর করতে পারেন।


Parent-Child Module কনফিগারেশন কী?

Parent Module হল একটি মডিউল যা বিভিন্ন চাইল্ড মডিউলের ডিপেনডেন্সি এবং কনফিগারেশন পরিচালনা করে। এটি ডিপেনডেন্সি হ্যান্ডলিং এবং মডিউল কনফিগারেশনের জন্য কেন্দ্রীয় ভূমিকা পালন করে। Child Modules হল প্যারেন্ট মডিউল থেকে নির্দিষ্ট ডিপেনডেন্সি গ্রহণ করে এবং প্রোজেক্টের কার্য সম্পাদন করে।

আইভি এই কনফিগারেশনে প্যারেন্ট মডিউলের ivy.xml ফাইল থেকে চাইল্ড মডিউলগুলোর ডিপেনডেন্সি এবং কনফিগারেশন শেয়ার করতে সাহায্য করে।


Parent-Child Module কনফিগারেশন কিভাবে কাজ করে?

এখানে একটি উদাহরণ দেখানো হবে যেখানে প্যারেন্ট মডিউল এবং চাইল্ড মডিউল একসাথে কাজ করবে।

১. Parent Module ডিফাইন করা

প্যারেন্ট মডিউল সাধারণত একটি ivy.xml ফাইল থাকবে, যেখানে সমস্ত সাধারণ ডিপেনডেন্সি এবং কনফিগারেশন নির্ধারিত থাকবে। এই প্যারেন্ট মডিউলটি চাইল্ড মডিউলগুলোর জন্য ডিপেনডেন্সি শেয়ার করবে।

<ivy-module version="2.0">
    <info organisation="com.example" module="parent-module" revision="1.0.0"/>
    
    <dependencies>
        <dependency org="org.apache.commons" name="commons-lang3" rev="3.10"/>
    </dependencies>
    
    <!-- Common configuration shared by child modules -->
    <configurations>
        <conf name="compile" description="Compile dependencies"/>
        <conf name="runtime" description="Runtime dependencies"/>
    </configurations>
</ivy-module>

এখানে:

  • প্যারেন্ট মডিউলে commons-lang3 লাইব্রেরির ডিপেনডেন্সি রয়েছে যা চাইল্ড মডিউলগুলোর জন্য শেয়ার করা হবে।
  • compile এবং runtime কনফিগারেশন ডিফাইন করা হয়েছে, যা চাইল্ড মডিউলগুলিতে শেয়ার করা যাবে।

২. Child Module ডিফাইন করা

চাইল্ড মডিউলগুলিতে, আপনি প্যারেন্ট মডিউলটির ডিপেনডেন্সি এবং কনফিগারেশন ব্যবহার করতে পারেন। চাইল্ড মডিউলগুলিতে সাধারণত ivy.xml ফাইলের মধ্যে প্যারেন্ট মডিউলের রেফারেন্স রাখা হয়।

<ivy-module version="2.0">
    <info organisation="com.example" module="child-module" revision="1.0.0"/>
    
    <!-- Inherit dependencies from parent module -->
    <dependencies>
        <dependency org="com.example" name="parent-module" rev="1.0.0"/>
    </dependencies>
    
    <configurations>
        <conf name="compile" description="Compile dependencies"/>
    </configurations>
</ivy-module>

এখানে:

  • চাইল্ড মডিউলে প্যারেন্ট মডিউলটি একটি ডিপেনডেন্সি হিসেবে অন্তর্ভুক্ত করা হয়েছে, যার মাধ্যমে চাইল্ড মডিউল প্যারেন্ট মডিউলের ডিপেনডেন্সি এবং কনফিগারেশন পাবে।
  • চাইল্ড মডিউলটি প্যারেন্ট মডিউলের commons-lang3 লাইব্রেরি ডিপেনডেন্সি ব্যবহার করবে।

৩. Parent-Child Dependency Sharing

যখন প্যারেন্ট মডিউলে ডিপেনডেন্সি নির্ধারণ করা হয়, তখন চাইল্ড মডিউলগুলি সেই ডিপেনডেন্সি শেয়ার করে এবং তাদের কাজ চালিয়ে নেয়। এছাড়া, প্যারেন্ট মডিউল থেকে কনফিগারেশনগুলোও শেয়ার করা যায়, যেমন compile, runtime, ইত্যাদি।

এটি আপনার প্রোজেক্টে একাধিক সাব-প্রজেক্ট বা মডিউল পরিচালনাকে আরও সহজ এবং সুশৃঙ্খল করে তোলে।


৪. Dependency Scope (প্রয়োজনীয় কনফিগারেশন)

আইভি আপনাকে নির্দিষ্ট করতে দেয় কোন কনফিগারেশনে ডিপেনডেন্সি ব্যবহৃত হবে, যেমন compile, runtime, ইত্যাদি। এই কনফিগারেশনগুলো প্যারেন্ট মডিউল থেকে চাইল্ড মডিউলে শেয়ার করা যায়।

উদাহরণ: Parent এবং Child Module এর মধ্যে কনফিগারেশন শেয়ার করা

<ivy-module version="2.0">
    <info organisation="com.example" module="child-module" revision="1.0.0"/>
    
    <!-- Inherit compile and runtime configurations from the parent module -->
    <dependencies>
        <dependency org="com.example" name="parent-module" rev="1.0.0" conf="compile, runtime"/>
    </dependencies>
</ivy-module>

এখানে:

  • চাইল্ড মডিউল প্যারেন্ট মডিউলের compile এবং runtime কনফিগারেশন শেয়ার করছে।

৫. Parent-Child Module Example with Multi-Module Setup

একটি পূর্ণাঙ্গ উদাহরণ যেখানে একটি প্যারেন্ট মডিউল এবং দুটি চাইল্ড মডিউল থাকবে, এবং প্যারেন্ট মডিউল চাইল্ড মডিউলগুলির জন্য ডিপেনডেন্সি শেয়ার করবে:

Parent Module (parent-module/ivy.xml)

<ivy-module version="2.0">
    <info organisation="com.example" module="parent-module" revision="1.0.0"/>

    <dependencies>
        <dependency org="org.apache.commons" name="commons-lang3" rev="3.10"/>
    </dependencies>
</ivy-module>

Child Module 1 (child-module1/ivy.xml)

<ivy-module version="2.0">
    <info organisation="com.example" module="child-module1" revision="1.0.0"/>

    <dependencies>
        <dependency org="com.example" name="parent-module" rev="1.0.0"/>
    </dependencies>
</ivy-module>

Child Module 2 (child-module2/ivy.xml)

<ivy-module version="2.0">
    <info organisation="com.example" module="child-module2" revision="1.0.0"/>

    <dependencies>
        <dependency org="com.example" name="parent-module" rev="1.0.0"/>
    </dependencies>
</ivy-module>

এখানে:

  • parent-module একটি প্যারেন্ট মডিউল যা একটি ডিপেনডেন্সি (commons-lang3) সংজ্ঞায়িত করেছে।
  • দুইটি চাইল্ড মডিউল (child-module1 এবং child-module2) প্যারেন্ট মডিউলটির ডিপেনডেন্সি শেয়ার করেছে।

সারাংশ

অ্যাপাচি আইভি (Apache Ivy) প্যারেন্ট এবং চাইল্ড মডিউল কনফিগারেশন ব্যবহারের মাধ্যমে বিভিন্ন মডিউলের মধ্যে ডিপেনডেন্সি শেয়ার করা সহজ করে তোলে। এতে আপনি একটি প্যারেন্ট মডিউল থেকে চাইল্ড মডিউলে ডিপেনডেন্সি এবং কনফিগারেশন শেয়ার করতে পারেন, যা প্রকল্পের মডিউলগুলোকে আরও সুশৃঙ্খলভাবে ম্যানেজ করার সুবিধা প্রদান করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion